Skip to content

NVIDIA GPU 架构演进:Volta 到 Blackwell ​

标签
AI/infra/架构
字数
3474 字
阅读时间
15 分钟

做 AI Infra 经常要回答这类问题:训练跑不动该升级什么卡?推理延迟高卡在哪里?FP8 和 BF16 到底选哪个?答案大多藏在架构本身的设计决策里 —— 每一代架构都在回应上一代暴露出来的瓶颈。

五代架构全景 ​

架构年份代表产品核心突破解决了什么问题
Volta2017V100首次引入 Tensor CoreCUDA Core 做矩阵乘太浪费
Turing2018T4INT8/INT4 Tensor Core、RT Core推理负载用不上 FP16 精度,算力浪费
Ampere2020A100第三代 Tensor Core、TF32、BF16、MIGFP16 会溢出;一卡一任务利用率低
Hopper2022H100FP8、Transformer Engine、NVLink 4.0、TMALLM 时代的算力饥渴与通信瓶颈
Blackwell2024B200 / GB200第五代 Tensor Core、FP4、NVLink 5.0、双芯封装单 die 算力增长追不上模型膨胀

三条贯穿全程的主线:精度格式不断下探(FP32 → FP16 → BF16/TF32 → FP8 → FP4)、互联带宽持续翻倍(NVLink 300 GB/s → 1,800 GB/s)、软硬件协同加深(从 Tensor Core 到 Transformer Engine 的自动精度调度)。

五代架构的时间线(每一代回应上一代暴露的瓶颈):

  2017 ── Volta(V100)      首次 Tensor Core:FP16 计算 + FP32 累加
    │                         ⇒ AMP 与 loss scaling 的硬件起点
  2018 ── Turing(T4)       INT8 / INT4 Tensor Core、RT Core,TDP 70W
    │                         ⇒ 量化在工业界铺开(TensorRT 的靶子)
  2020 ── Ampere(A100)     TF32、BF16、MIG,第三代 Tensor Core
    │                         ⇒ LLM 训练的默认精度切到 BF16
  2022 ── Hopper(H100)     FP8 + Transformer Engine、NVLink 4.0、TMA
    │                         ⇒ 回应 LLM 的算力饥渴与通信瓶颈
  2024 ── Blackwell(B200)  FP4、NVLink 5.0、双芯封装、累加器落 TMEM
                              ⇒ 单 die 算力追不上模型膨胀,转向封装与互联

Volta(2017):AI 加速的开端 ​

Volta 之前,深度学习训练靠 CUDA Core 做通用浮点运算 —— 什么都能算,但没对矩阵乘法做专门优化。

关键创新是 Tensor Core。传统 CUDA Core 每周期做一次标量乘加(FMA);一个 Volta Tensor Core 每周期完成一个 4×4×4 的混合精度矩阵乘累加:

D=A×B+C

其中 A、B 是 FP16,C、D 是 FP16 或 FP32。一次操作完成 64 次乘加。

V100 规格值
SM 数80
Tensor Core 数640(80 SM × 8)
FP16 Tensor 算力125 TFLOPS
FP32 CUDA 算力15.7 TFLOPS
显存16 / 32 GB HBM2
显存带宽900 GB/s
NVLink2.0,300 GB/s

实践意义:Volta 开启了一个编程范式的转变 —— 想用满 Tensor Core,矩阵维度需要是 8 的倍数,数据类型要用混合精度(FP16 计算 + FP32 累加)。这是 NVIDIA AMP(Automatic Mixed Precision)的硬件基础,也是「loss scaling」这套机制的起点。

Turing(2018):为推理加速 ​

Volta 面向训练。到了部署阶段,推理对延迟与吞吐更苛刻,而很多模型用 INT8 就能保持足够精度 —— Volta 的 Tensor Core 只支持 FP16,在推理场景下算力利用不充分。

关键创新:

  • INT8 / INT4 Tensor Core —— 第二代 Tensor Core 新增整数精度,推理吞吐相对 FP16 可再翻倍
  • RT Core —— 光追加速单元(AI Infra 很少涉及)
  • 低功耗推理定位 —— T4 的 TDP 仅 70W
T4 规格值
Tensor Core 数320
FP16 Tensor 算力65 TFLOPS
INT8 Tensor 算力130 TOPS
显存16 GB GDDR6
显存带宽320 GB/s
TDP70W

实践意义:Turing 推动了量化在工业界的普及 —— TensorRT 的 INT8 量化 pipeline 正是以 Turing 为目标设计的。T4 的绝对算力不如 V100,但低功耗 + 高 INT8 吞吐让它成为推理部署的经典选择,很多云厂商的推理实例至今仍在用。

Ampere(2020):数据中心 AI 的分水岭 ​

到 2020 年模型规模急剧膨胀(GPT-3 有 1750 亿参数),两个痛点突出:精度格式不够用(FP16 在某些模型上溢出,FP32 又太慢)、单卡利用率不高(一卡一任务,多租户场景浪费)。

TF32:不改代码的加速 ​

TF32 取 FP32 的 8 位指数(保持数值范围)+ FP16 的 10 位尾数,共 19 位:

格式符号位指数位尾数位总位宽
FP32182332
TF32181019
FP16151016
BF1618716

TF32 在 Ampere 上默认开启。在 A100 上跑 FP32 的 torch.matmul 时,Tensor Core 会自动用 TF32 加速 —— 不需要改代码,代价是乘法精度降低(累加仍在 FP32)。

BF16:LLM 训练的默认精度 ​

BF16 与 FP32 共享 8 位指数,动态范围一致,因此训练时不易溢出,同时把显存与通信量减半。大部分 LLM 训练从 Ampere 时代起以 BF16 为默认训练精度 —— 这条切换的影响远大于算力本身的提升,因为它同时省显存、省带宽、省通信量。

MIG:一卡多用 ​

MIG(Multi-Instance GPU) 把一块 A100 物理隔离为最多 7 个独立实例,每个实例有独立的显存、缓存和计算资源。

bash
nvidia-smi mig -lgip          # 查看支持的 MIG 配置
sudo nvidia-smi mig -cgi 9,9 -C   # 创建一个 3g.20gb 实例
nvidia-smi mig -lgi           # 查看已创建实例

适用:多推理服务共享一卡、开发调试多人共用。不适用:需要完整 GPU 算力的大模型训练。

A100 SXM 规格值
SM 数108
Tensor Core 数432
FP16 / BF16 Tensor 算力312 TFLOPS
TF32 Tensor 算力156 TFLOPS
FP32 CUDA 算力19.5 TFLOPS
显存40 / 80 GB HBM2e
显存带宽2,039 GB/s(80GB 版)
NVLink3.0,600 GB/s

第三代 Tensor Core 支持的精度矩阵大幅扩展:FP16、BF16、TF32、INT8、INT4、Binary(1-bit),覆盖训练到推理全场景。

Hopper(2022):为大模型而生 ​

LLM 时代带来双重压力:算力饥渴(千亿参数要成百上千卡)与通信瓶颈(AllReduce / All-to-All 成主要瓶颈)。Hopper 的重要特性几乎都在回应这两条。

FP8 与 Transformer Engine ​

第四代 Tensor Core 支持 FP8(E4M3 / E5M2),训练精度从 BF16 的 16 位压到 8 位,理论算力翻倍。

格式指数位尾数位适用
E4M343前向(精度优先)
E5M252反向(范围优先)

精度降低会不会伤模型质量?Transformer Engine 就是配套答案:它在每层计算前动态分析张量数值分布,自动决定这一层用 FP8 还是 BF16/FP16 —— 数值稳定的层挂高速档,数值敏感的层自动降档。

python
import transformer_engine.pytorch as te

model.layer = te.Linear(hidden_size, hidden_size)

with te.fp8_autocast(enabled=True):
    output = model(input_data)

实践中 FP8 + Transformer Engine 把训练吞吐提升 30%–60%(取决于模型结构与数值分布)。

指标Ampere (A100)Hopper (H100)变化
NVLink 带宽(双向)600 GB/s900 GB/s1.5×
NVSwitch 范围节点内 8 卡节点内 8 卡 + 跨节点 NVLink Network新增

执行模型上加了两个东西,后续 CUDA 章节会用到:

  • Thread Block Cluster —— 编程模型新增一层,允许多个 Thread Block 协作,利用 SM 间的分布式共享内存
  • TMA(Tensor Memory Accelerator) —— 硬件异步拷贝单元,把数据搬运从计算流水线解耦,大幅减少地址计算占用的寄存器

H100 两种封装,差距很大 ​

H100 SXM5H100 PCIe
SM 数132114
Tensor Core 数528456
FP16 Tensor 算力989 TFLOPS约 800 TFLOPS
FP8 Tensor 算力1,979 TFLOPS约 1,600 TFLOPS
TF32 Tensor 算力495 TFLOPS378 TFLOPS
显存带宽3.35 TB/s2 TB/s
NVLink4.0,900 GB/s(8 卡全互联)4.0,仅 2 卡桥接

选型务必确认封装

SXM 与 PCIe 同名不同性能,显存带宽差 1.7 倍,NVLink 组网能力差一个量级。同一个型号报出来的价格差一大截,原因往往在这里。做容量规划时不能只看型号。

另有一条中国市场特供的事实值得记:H800 的 FP16 算力与 H100 相同(989 TFLOPS),但 NVLink 带宽被压到 400 GB/s —— 对张量并行的影响是直接的(见 03-多卡互联与集群网络)。

H200:长序列推理的答案 ​

H100H200
显存80 GB HBM3141 GB HBM3e
显存带宽3.35 TB/s4.8 TB/s
算力相同相同

只是显存和带宽变大了 —— 这恰好对应 LLM 推理的瓶颈:KV Cache 吃显存(见 10-KV Cache 与推理优化),Decode 吃带宽。H200 是「不为算力买单,为上下文长度和并发买单」的定位。

Blackwell(2024):万亿参数时代的基石 ​

单 die 的算力增长已经跟不上模型膨胀。Blackwell 的思路是转向芯片互联层面的突破。

双芯封装 ​

B200 由两块 die 通过 10 TB/s 的片间互联封装在同一块芯片上,对外表现为一块完整的 GPU。代价是编程模型上需要注意跨 die 的带宽与延迟特征 —— 这与「SM 内 vs SM 间」的差异是同一类问题,只是又加了一层。

其他关键变化 ​

项内容
第五代 Tensor Core首次硬件支持 FP4;最大单 CTA MMA 原子 m128n256k16
累加器落到 TMEMBlackwell 的 UMMA 不再往线程寄存器累加,而是写进专用 Tensor Memory —— 因为 m128n256k16 的累加器有 32,768 个 FP32 值,按 warpgroup 分是每线程 256 个,超过 255 的寄存器上限
NVLink 5.0双向 1,800 GB/s,通过 NVLink Switch 可连 72 块 GPU
HBM3e单卡最高 192 GB,8 TB/s
第二代 Transformer Engine更细粒度的 FP8/FP4 动态调度
机密计算硬件级 GPU TEE

NVLink 5.0 的意义不只是带宽翻倍:72 卡的互联域意味着「一个 NVLink 域」的范围从 8 卡扩到 72 卡。过去必须精心设计通信拓扑来规避的瓶颈,现在可以用更大范围的机内带宽直接碾过 —— 这会直接改变张量并行的可用规模(见 03-多卡互联与集群网络)。

B200 / GB200 ​

参数B200GB200(Grace-Blackwell)
FP8 Tensor 算力4,500 TFLOPS(Dense)同左(GPU 部分)
FP4 Tensor 算力9,000 TFLOPS(Dense)同左(GPU 部分)
显存192 GB HBM3e192 GB HBM3e + 480 GB LPDDR5x(CPU)
显存带宽8 TB/s8 TB/s(GPU 部分)
NVLink5.0,1,800 GB/s5.0,1,800 GB/s
设计双 die 封装Grace CPU + Blackwell GPU 经 NVLink-C2C 紧耦合

GB200 把 NVIDIA 自研的 Grace ARM CPU 与 Blackwell GPU 通过 NVLink-C2C 封装在一起,消除了传统 PCIe 的 CPU-GPU 通信瓶颈。

B200 算力口径存疑

上表的 B200 数字按 Blackwell 架构口径(Dense)填写,可由硬件参数反推验证:148 个启用 SM(两块 die 各 80 个、启用 74 个)× 8,192 FLOP/clock/SM × 1.86 GHz ≈ 2.25 PFLOPS FP16 Dense,与 FP8 = 2× FP16 的关系一致。

来源教程的表格给的是一半(FP16 约 1,125 TFLOPS、FP8 Dense 2,250 TFLOPS),两者差 2 倍。最可能的解释是教程把 Dense 与稀疏口径串了。本表按架构推导口径填写,引用前建议以 NVIDIA 官方数据表复核。

纵向对比 ​

Tensor Core 算力(Dense) ​

精度V100T4A100H100B200
FP16 / BF16125653129892,250
TF32——1564951,100
FP8———1,9794,500
INT8—130 TOPS624 TOPS1,979 TOPS4,500 TOPS
FP4————9,000 TOPS

单位 TFLOPS / TOPS。Ampere 起支持 2:4 结构化稀疏,开启后吞吐翻倍;V100 / T4 不支持。厂商宣传常用稀疏数字,比较时必须对齐口径。

显存与互联 ​

指标V100A100H100B200
显存容量32 GB80 GB80 GB192 GB
显存类型HBM2HBM2eHBM3HBM3e
显存带宽900 GB/s2,039 GB/s3,350 GB/s8,000 GB/s
NVLink 带宽300 GB/s600 GB/s900 GB/s1,800 GB/s
单 NVLink 域 GPU 数888(+ 跨节点网络)72

一条明显的趋势:显存带宽的增长慢于算力增长。 H100 到 B200 算力涨了 2.3 倍,带宽只涨了 2.4 倍(看起来同步),但从 V100 到 B200 算力涨了 18 倍、带宽只涨了 9 倍。这正是 memory-bound 特性越来越突出的硬件原因。

算力与带宽的增长在拉开差距(以 V100 为 1):

                  V100     A100     H100     B200
  FP16 算力        1×      2.5×     7.9×     18×
  显存带宽         1×      2.3×     3.7×     8.9×
  NVLink 带宽      1×       2×       3×       6×

        └──── 算力涨 18 倍,显存带宽只涨约 9 倍 ────┘

  ⇒ memory-bound 的特性逐代加重:算力买得到,喂饱算力的带宽跟不上。

选型 ​

训练:

场景推荐理由
< 10BA100 80GB性价比与生态
10B – 100BH100 SXMFP8 + NVLink 4.0 提升多卡效率
> 100BB200 / GB200192 GB 显存 + 1.8 TB/s NVLink,且单域 72 卡

推理:

场景推荐理由
低成本在线推理T470W,INT8 够用
中等规模 LLMA100 / L40S显存与生态
大规模 LLMH100 / H200FP8 吞吐高;H200 的 141 GB 与 4.8 TB/s 直接对口长上下文
极致性能B200FP4 与 192 GB

除了单卡性能,还要看集群网络拓扑(NVLink vs PCIe vs InfiniBand)、功耗散热、交付周期。**硬件选型从来不是纯技术问题。**

相关 ​

参考 ​

贡献者 ​

文件历史 ​